#!/bin/sh
#
# Copyright 2015-2023 The OpenZipkin Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
# in compliance with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
# or implied. See the License for the specific language governing permissions and limitations under
# the License.
#

# ENTRYPOINT script that starts Elasticsearch
#
# This intentionally locates config using the current working directory, in order to consolidate
# Dockerfile instructions to WORKDIR
set -eu

# Configure the Docker HEALTHCHECK
export HEALTHCHECK_PORT=9200
export HEALTHCHECK_PATH=/_cluster/health

# This loads the ES launcher because configuration of the actual process is
# in binary and not documented for external use.
# See https://github.com/elastic/elasticsearch/blob/v8.11.3/server/src/main/java/org/elasticsearch/bootstrap/ServerArgs.java#L57
#
# Notably, this means that just like the default image, the ES daemon is not
# pid 1
exec java -cp 'lib/*:lib/cli-launcher/*' -XX:+UseSerialGC \
  -Dcli.name=server \
  -Dcli.script=$PWD/bin/elasticsearch \
  -Dcli.libs=lib/tools/server-cli \
  -Des.path.home=$PWD \
  -Des.path.conf=$PWD/config \
  -Des.distribution.type=docker \
  org.elasticsearch.launcher.CliToolLauncher
